﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;

namespace Servico
{
    public class Tecnico : Funcionario
    {
        private int nivel;
        private Dictionary<DateTime, Tarefa> planeamento;


        public Tecnico() :base() {
            this.nivel = 0;
            planeamento = new Dictionary<DateTime, Tarefa>();
        }

        public Tecnico(int n,int id, Dictionary<DateTime, Tarefa> planeamento) : base(id) {
            this.nivel = n;
            this.planeamento = planeamento;
        }

        public Dictionary<DateTime, Tarefa> getPlaneamento() { return this.planeamento; }

        public void setPlaneamento(Dictionary<DateTime, Tarefa> novo)
        {
            foreach (DateTime date in novo.Keys)
            {
                if (planeamento.ContainsKey(date)) planeamento.Remove(date);
                planeamento.Add(date, novo[date]);
            }
        }

        public int getNivel() { return this.nivel; }
        public void setNivel(int n) { this.nivel = n; }

        public void setHora(DateTime hora, Tarefa tarefa)
        {
            this.planeamento.Add(hora, tarefa);
        }

        public DateTime getHoraInicioTarefa(Tarefa tarefa)
        {
            foreach (DateTime date in planeamento.Keys)
            {
                Tarefa t;
                planeamento.TryGetValue(date, out t);
                if (tarefa.getId_pedido_recebido() == t.getId_pedido_recebido() && tarefa.getId() == t.getId()) return date;
            }
            return new DateTime();
        }


        public DateTime getHoraFimTarefa(Tarefa tarefa)
        {
            return getHoraInicioTarefa(tarefa).AddHours(tarefa.getDuracao());
        }

    }
}